// import { defineConfig } from 'vite'
import { type UserConfig, type ConfigEnv, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import { resolve } from "path";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";
import Icons from "unplugin-icons/vite";
// import IconsResolver from "unplugin-icons/resolver";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";

// https://vite.dev/config/
export default ({ mode }: ConfigEnv): UserConfig => {
  const viteEnv = loadEnv(mode, process.cwd());
  return {
    base: viteEnv.VITE_PUBLIC_PATH,
    server: {
      /** 端口号 */
      port: 5000,
      /** 是否自动打开浏览器 */
      open: true,
      /** 接口代理 */
      // proxy: {
      //   "/api": {
      //     target: "https://mock.mengxuegu.com/mock/63218b5fb4c53348ed2bc212",
      //     ws: true,
      //     /** 是否允许跨域 */
      //     changeOrigin: true,
      //   },
      // },
    },
    /** 混淆器 */
    esbuild:
      mode === "development"
        ? undefined
        : {
            /** 打包时移除 console.log */
            pure: ["console.log"],
            /** 打包时移除 debugger */
            drop: ["debugger"],
            /** 打包时移除所有注释 */
            legalComments: "none",
          },
    plugins: [
      vue(),
      AutoImport({
        imports: ["vue", "pinia", "vue-router"],
        eslintrc: {
          enabled: true, // 是否自动生成 eslint 规则，建议生成之后设置 false
          filepath: "./.eslintrc-auto-import.json", // 指定自动导入函数 eslint 规则的文件
        },
        resolvers: [AntDesignVueResolver()],
        vueTemplate: true, // 是否在 vue 模板中自动导入
        dts: resolve(resolve(__dirname, "src"), "types", "auto-imports.d.ts"), // 指定自动导入函数TS类型声明文件路径
      }),
      Components({
        resolvers: [
          AntDesignVueResolver({
            importStyle: false, // css in js
            resolveIcons: true, // 启用图标解析
          }),
          // // 自动注册图标组件
          // IconsResolver({
          //    // 取消前缀，这样可以直接使用图标名（例如：UserOutlined）
          //   prefix: false,
          //   enabledCollections: ["ant-design"] // 其他图标库 https://icon-sets.iconify.design/
          // }),
        ],
        dts: resolve(resolve(__dirname, "src"), "types", "components.d.ts"), // 指定自动导入组件TS类型声明文件路径
      }),
      Icons({
        // 自动安装图标库
        autoInstall: true,
        compiler: "vue3",
      }),
      createSvgIconsPlugin({
        // 指定需要缓存的图标文件夹
        iconDirs: [resolve(process.cwd(), "src/assets/svg")],
        // 指定symbolId格式
        symbolId: "icon-[dir]-[name]",
      }),
    ],
    resolve: {
      alias: {
        "@": resolve(__dirname, "src"),
      },
    },
  };
};
